#!/usr/bin/php -q
<?php
/** 
 * FileFind - ftp/shares indexing and search php engine,
 * http://project.ffind.ru
 *
 * Module: db_update.php
 * Description: Create / check / update information about database
 *
 * @package filefind
 * @copyright (c) 2003-2008 by Rage Steel, www.gt2.ru
 * @version $Id$
 */

chdir('../www');
require_once('./lib/lib.main.php');
$tpl['no_page_template'] = true;

chdir('../db');
require_once('./lib.table_struct.php');

$struct_filename = 'db_struct.inc.php';

function cyr_echo($str) {
//  echo convert_cyr_string($str, 'w', 'd');
	echo $str;
} // cyr_echo

// Команды
// create
// check
// update

$commands = array('create', 'check', 'update');
if ($_SERVER['argc'] == 2) {
  $command = $_SERVER['argv'][1];
  if (!in_array($command, $commands)) {
    $command = '';
  }
} else {
  $command = '';
}

if ($command == '') {
  cyr_echo(
    "Команда отсутствует или некорректна!\n\n" . 
    "Описание допустимых команд:\n" .
    "  create - создание файла со структура текущей базы данных\n" .
    "  check - проверка соответстви  текущей базы данных файлу со структурой\n" .
    "  update - обновление текущей базы данных по файлу со структурой\n\n"
  );
  return false;
}

if ($command == 'create') {
  $table_php = var_export(gen_table_struct(), true);

  $pattern = array(
    '/^array \(/',
    '/(\n\s+array \()/'
  );
  $replace = array(
    '$table_struct = array(',
    'array('
  );

  $table_php = preg_replace($pattern, $replace, $table_php);

  $f = fopen($struct_filename, 'w');
  $ver = $tpl['version'];
  fwrite($f, "<?php\n// WARNING: this file is generated automatically, do not edit it!\n\n// FileFind database structure v$ver\n// \$Id: \$\n\n");
  fwrite($f, $table_php);
  fwrite($f, "?>\n");
  fclose($f);

} elseif (($command == 'check') || ($command == 'update')) {
  
  if (!file_exists($struct_filename)) {
    cyr_echo("Отсутствует файл со структурой базы данных: $struct_filename\n");
  }
  require_once($struct_filename);

  sync_table_struct($table_struct, gen_table_struct());
}
?>